

vim.g.mapleader = " "
vim.g.maplocalleader = " "
local map = vim.api.nvim_set_keymap
-- 复用 opt 参数
local opt = { noremap = true, silent = true }

local key = vim.keymap

-- 插件快捷键
local pluginKeys = {}


-- 可视模式--
-- 交换上下移动选中的文本
map("v", "J", ":move '>+1<CR>gv=gv", opt)
map("v", "K", ":move '>-2<CR>gv=gv", opt)

-- visual模式下缩进代码
map("v", "<", "<gv", opt)
map("v", ">", ">gv", opt)

-- 在visual 模式里粘贴不要复制
map("v", "p", '"_dP', opt)

--上下滚动浏览
--map("n", "<C-j>", "4j", opt)
--map("n", "<C-k>", "4k", opt)
-- ctrl u / ctrl + d  只移动9行，默认移动半屏
map("n", "<C-u>", "9k", opt)
map("n", "<C-d>", "9j", opt)


--Normal mode 窗口导航
map("n", "<C-h>", "<C-w>h", opt)
map("n", "<C-j>", "<C-w>j", opt)
map("n", "<C-k>", "<C-w>k", opt)
map("n", "<C-l>", "<C-w>l", opt)

--调整窗口大小
map("n", "<C-Up>",    ":resize -2<CR>", opt)
map("n", "<C-Down>",  ":resize +2<CR>", opt)
map("n", "<C-Left>",  ":vertical resize -2<CR>", opt)
map("n", "<C-Right>", ":vertical resize +2<CR>", opt)

--Alt+左右箭头键顺序切换tab
map("n", "<A-Left>", ":bp <CR>", opt)
map("n", "<A-Right>", ":bn <CR>", opt)

-- insert 模式下，跳到行首行尾
map("i", "<C-h>", "<ESC>I", opt)
map("i", "<C-l>", "<ESC>A", opt)

-- 删除选中的文本(非剪切)
map("n", "<leader>d", '"_dd', opt)
map("v", "<leader>d", '"_dd', opt)


-- 取消高亮
key.set("n", "<leader>nh", ":nohl<CR>")


key.set("i", "<C-v>", '<ESC>"+p$')

--插入模式按Shift+Insert 粘贴
key.set("i", "<S-Insert>", '<ESC>"+p$')




-- 列表快捷键
pluginKeys.nvimTreeList = {
	-- 打开文件或文件夹
	{ key = { "<CR>", "o", "<2-LeftMouse>" }, action = "edit" },
	-- 分屏打开文件
	{ key = "v", action = "vsplit" },
	{ key = "h", action = "split" },
	-- 显示隐藏文件
	{ key = "i", action = "toggle_custom" }, -- 对应 filters 中的 custom (node_modules)
	{ key = ".", action = "toggle_dotfiles" }, -- Hide (dotfiles)
	-- 文件操作
	{ key = "<F5>", action = "refresh" },
	{ key = "a", action = "create" },
	{ key = "d", action = "remove" },
	{ key = "r", action = "rename" },
	{ key = "x", action = "cut" },
	{ key = "c", action = "copy" },
	{ key = "p", action = "paste" },
	{ key = "s", action = "system_open" },
}


-- Telescope 列表中 插入模式快捷键
pluginKeys.telescopeList = {
	i = {
		-- 上下移动
		["<C-j>"] = "move_selection_next",
		["<C-k>"] = "move_selection_previous",
		["<Down>"] = "move_selection_next",
		["<Up>"] = "move_selection_previous",
		-- 历史记录
		["<C-n>"] = "cycle_history_next",
		["<C-p>"] = "cycle_history_prev",
		-- 关闭窗口
		["<C-c>"] = "close",
		-- 预览窗口上下滚动
		["<C-u>"] = "preview_scrolling_up",
		["<C-d>"] = "preview_scrolling_down",
	},
}

-- 代码注释插件
-- see ./lua/plugin/comment.lua
pluginKeys.comment = {
	-- Normal 模式快捷键
	toggler = {
		line = "gcc", -- 行注释
		block = "gbc", -- 块注释
	},
	-- Visual 模式
	opleader = {
		line = "gc",
		bock = "gb",
	},
}

return pluginKeys
